セッションマネージャーを使って鍵ストレスの無いEC2アクセス!
みなさん、踏み台サーバーの管理やEC2インスタンスの鍵の管理など面倒に感じたことはありませんか?
その悩み、もしかしたらセッションマネージャーで解決できるかもしれません!
意外と便利なセッションマネージャー、設定も意外と簡単にできちゃいます。
今回は、セッションマネージャーのメリットと設定方法を紹介します。
セッションマネージャーとは
セッションマネージャーを使うと、ブラウザのAWSマネジメントコンソールから、
対象のEC2インスタンスに鍵認証の設定無しでアクセスすることができます。
つまり、鍵の管理から解放されます。やったー!
でも、設定とか使い方が大変だったりするんじゃないの?とお思いのあなた。
それも実は意外と簡単です。さっくり手順を紹介していきましょう。
セッションマネージャーを使うために必要な手順
- EC2インスタンスにSSMエージェントをインストールする
- EC2インスタンス用のIAMロールを作成する
- EC2インスタンスに作成したIAMロールをアタッチする
- SSM エンドポイントへのアウトバウンドアクセス経路を用意する
なんとこれだけです。作業時間としてはおよそ15分程度で完了します。
では、具体的な手順の紹介です。
EC2インスタンスにSSMエージェントをインストール
手順として記述しましたが、実はAmazonLinux2にはSSMエージェントがプリインストールされています。 AmazonLinux2 を利用中の方はこの手順はスキップして問題ありません!
また、EC2で選択できるその他多くのOSにもSSMエージェントがプリインストールされています。
AmazonLinux2以外のOSを利用している方は、下記の記事より利用中のOSへインストールの必要があるかを確認、インストールしてください。
Session Manager を通して SSH 接続のアクセス許可を有効にして制御する - AWS Systems Manager
OSごとに細かく対応が異なるため、本記事では割愛します。
EC2インスタンスのIAMロールを作成する
このステップでは、必要なポリシーを付与したEC2インスタンス用のIAMロールを作成します。
※既にEC2インスタンスのIAMロールが存在する場合は、既存のIAMロールに下記のポリシーをアタッチしてください。
IAMロールの作成画面を開きます。
1つ目の画面では
信頼されたエンティティタイプは “AWSのサービス”
ユースケースは “EC2” を選択します。
次に、ポリシーを選択します。
AmazonSSMManagedInstanceCore
というAWS管理のポリシーがあるので、これを選択します。
そのまま次の画面に進み、ロールの作成を完了します。
これで、ロールの作成が完了しました。
作成したIAMロールをEC2インスタンスにアタッチする
前のステップで作成したIAMロールをEC2インスタンスにアタッチします。
該当するインスタンスを選択し、
「インスタンスの変更」→「セキュリティ」→「IAMロールの変更」を選択します。
次に、プルダウンから先ほど作成したポリシーを選択し、更新ボタンを押します。
SSM エンドポイントへのアウトバウンドアクセス経路を用意する
最後に、SSMエンドポイントへのアクセス経路を用意する必要があります。
インスタンスがパブリックサブネットの場合はインターネットゲートウェイを通じてアクセスできるので問題ありませんが、 プライベートサブネットの場合はVPCエンドポイントを作成する必要があります。
具体的には、以下のVPCエンドポイントを作成する必要があります。
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ssmmessages
- com.amazonaws.ap-northeast-1.ec2messages
- com.amazonaws.ap-northeast-1.s3
- S3のみ、作成時は Gateway 型を選択し、プライベートサブネットのルートテーブルを選択する。
※エンドポイントにリージョンが含まれている点に注意してください。東京リージョン以外は、リージョン名を適宜置き換えてください。
VPCエンドポイント用のセキュリティグループを作成する
エンドポイントを作成する前に、VPCエンドポイント用のセキュリティグループを作成しましょう。 EC2と同じVPCにセキュリティグループを作成していきます。
EC2からのHTTPSトラフィックが許可されるように設定すればOKです。 今回は、ソースにVPCのCIDRを指定し、HTTPSタイプのインバウンドトラフィックを許可します。
※画像ではソースに 10.0.0.0/16
を指定していますが、VPCごとに異なるため適宜調整してください。
VPCエンドポイントを作成する
次に、VPCエンドポイントを作成していきます。 サービス「VPC」から、「エンドポイント」を選択し、「エンドポイントを作成」をクリックします。
サービスの検索ボックスに、 ssm
など入力することで必要なエンドポイントを選択できます。
VPC,サブネットは、EC2インスタンスと同じものを選択していきます。
セキュリティグループは先ほど作成したものを選択します。
この作業を繰り返し、前述の4つのエンドポイントを全て作成します。
※ S3については今回の用途ではGateway型を使用した方が料金が安くなるため、Gateway型を使用しています。 作成時にはルートテーブルを選択する必要があるので、プライベートサブネットのルートテーブルを選択してください。
以上で、準備が完了しました!
EC2インスタンスに接続する
ここまで設定が完了すると、マネジメントコンソールからEC2インスタンスにアクセスできるようになっています。
EC2を選択して、「接続」ボタンをクリックします。
そこから「セッションマネージャー」のタブを選択します。
「接続」ボタンを押すとシェルが立ち上がり、今までと同じように作業を行うことができます!
※ユーザーは ec2-user ではなく ssm-user になっています。注意してください。
※もし、下記のようなエラーが出る場合は、しばらく待ってからページをリロードしてみてください。設定の反映に時間がかかっている可能性が高いです。
また、EC2を再起動することでも改善する場合があります。
これで、晴れてssh鍵をいちいちサーバーに登録したりしなくても、EC2にアクセスして作業をすることができるようになりました! 「Aさんの公開鍵どれでしたっけ?」みたいな不毛なやりとりも無くせますし、起動時にダウンロードした秘密鍵の紛失に怯えなくても済みます。
うまくいかないとき
以下のちゃだいんさんのブログで、接続できない場合のチェック項目がわかりやすくまとめられています。 うまくいかないときは、こちらの記事を参考にトラブルシューティングしてみてください。
おわりに
以上がセッションマネージャーの紹介でした。 ぜひみなさんもセッションマネージャーを使って、ストレスフリーなEC2ライフを送ってください!